package com.example.springboot.service.impl;

import com.example.springboot.dao.RoleMenuDao;
import com.example.springboot.dao.SysRoleDao;
import com.example.springboot.entity.RoleMenu;
import com.example.springboot.entity.SysRole;
import com.example.springboot.service.RoleMenuService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * (RoleMenu)表服务实现类
 *
 * @author makejava
 * @since 2021-09-06 11:55:07
 */
@Service("roleMenuService")
public class RoleMenuServiceImpl implements RoleMenuService {
	@Resource
	private RoleMenuDao roleMenuDao;
	@Resource
	private SysRoleDao sysRoleDao;

	/**
	 * 通过ID查询单条数据
	 *
	 * @param menuid 主键
	 * @return 实例对象
	 */
	@Override
	public RoleMenu queryById(Long menuid) {
		return this.roleMenuDao.queryById(menuid);
	}

	/**
	 * 查询多条数据
	 *
	 * @param offset 查询起始位置
	 * @param limit  查询条数
	 * @return 对象列表
	 */
	@Override
	public List<RoleMenu> queryAllByLimit(int offset, int limit) {
		return this.roleMenuDao.queryAllByLimit(offset, limit);
	}

	@Override
	public List<RoleMenu> queryAll(RoleMenu roleMenu) {
		return this.roleMenuDao.queryAll(roleMenu);
	}

	/**
	 * 新增数据
	 *
	 * @param roleMenu 实例对象
	 * @return 实例对象
	 */
	@Override
	public RoleMenu insert(RoleMenu roleMenu) {
		this.roleMenuDao.insert(roleMenu);
		return roleMenu;
	}

	@Override
	public RoleMenu update(RoleMenu roleMenu) {
		return null;
	}

	/**
	 * 修改数据
	 *
	 * @param sysRole 实例对象
	 * @return 实例对象
	 */
	@Override
	public boolean update(SysRole sysRole, List<Long> list) {
		boolean fly = false;
		if (this.sysRoleDao.queryById(sysRole.getId()) != null) {
			this.roleMenuDao.deleteById(sysRole.getId());
			for (int i = 0; i <= list.size(); i++) {
				Long menuId = list.get(i);
				RoleMenu roleMenu = new RoleMenu();
				roleMenu.setRoleid(sysRole.getId());
				roleMenu.setMenuid(menuId);
				while (this.roleMenuDao.insert(roleMenu) == 1) break;
			}
			fly = true;
		}
		return fly;
	}

	/**
	 * 通过主键删除数据
	 *
	 * @param menuid 主键
	 * @return 是否成功
	 */
	@Override
	public boolean deleteById(Long menuid) {
		return this.roleMenuDao.deleteById(menuid) > 0;
	}
}